﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Rance.Battle
{
    class 水淹七军1 : 准备技能
    {
        public 水淹七军1()
        {
            this.技能速度 = 80;
            this.技能目标 = Battle.技能目标.全体;
            this.消耗行动点 = Battle.消耗行动点.全部;
            this.准备后执行技能 = new 水淹七军1后();
            this.技能站位要求 = Battle.技能站位要求.无;
        }
    }

    class 水淹七军1后 : 准备后攻击技能
    {
        public 水淹七军1后()
        {
            this.可被守护 = false;
            this.技能速度 = 150;
            this.能否被反击 = false;
            this.物理系 = false;
            this.消耗行动点 = 0;
            this.打断系数 = 0;
            this.技能站位要求 = Battle.技能站位要求.无;
        }

        public int 伤害比例 = 10;
        public decimal 兵力加成 = 1.5m;

        public override int 单角色伤害结算(角色 角色1, 角色 角色2, bool 是否反击, int 战场修正, 乱数表 乱数表, 技能环境 环境)
        {
            return Convert.ToInt32(角色2.兵力 * (伤害比例 + 角色1.实际智 * 1m + 角色1.兵力 / 100 * 兵力加成) / 100m); 
        }

        public override void Excute(技能环境 环境)
        {
            base.Excute(环境);

            赋予 诅咒 = new 赋予()
            {
                Level = -1,
                是否单回合 = false
            };

            诅咒Behavior behavior = new 诅咒Behavior();
            环境.行动结果.ResultList.Add(behavior);

            foreach (var 角色 in 环境.目标List)
            {
                角色Struct 角色Struct = new Battle.角色Struct() { ID = 角色.ID, Name = 角色.Name };
                List<string> 赋予list = new List<string>();
                behavior.List.Add(new 诅咒BehaviorDetail() { 角色 = 角色Struct, List = 赋予list });


                if (角色.Set防御诅咒(诅咒))
                {
                    赋予list.Add("防御");
                }
            }
        }
    }

    class 水淹七军2 : 水淹七军1
    {
        public 水淹七军2()
        {
            this.准备后执行技能 = new 水淹七军1后();
        }
    }

    class 水淹七军2后 : 水淹七军1后
    {
        public 水淹七军2后()
        {
            this.伤害比例 = 16;
            兵力加成 = 1.5m;
        }

        public override void Excute(技能环境 环境)
        {
            base.Excute(环境);

            赋予 诅咒 = new 赋予()
            {
                Level = -1,
                是否单回合 = false
            };

            诅咒Behavior behavior = new 诅咒Behavior();
            环境.行动结果.ResultList.Add(behavior);

            foreach (var 角色 in 环境.目标List)
            {
                角色.兵力 = Convert.ToInt32(角色.兵力 * (100 - 伤害比例) / 100m);

                角色Struct 角色Struct = new Battle.角色Struct() { ID = 角色.ID, Name = 角色.Name };
                List<string> 赋予list = new List<string>();
                behavior.List.Add(new 诅咒BehaviorDetail() { 角色 = 角色Struct, List = 赋予list });

                if (环境.施放者.Set攻击诅咒(诅咒))
                {
                    赋予list.Add("攻击");
                }

                if (环境.施放者.Set防御诅咒(诅咒))
                {
                    赋予list.Add("防御");
                }
            }
        }
    }
}
